package com.lsfb.signsys.compatible;

import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.util.Log;

import com.google.common.base.Strings;
import com.lsfb.signsys.HttpUtils;
import com.lsfb.signsys.utils.SPUtils;


/**
 * 模板配置类
 *
 * @author zgscwjm
 * @time 2015年12月8日-下午2:30:08
 * @title Config
 */
public class Config {

    //这里只能设置全局的--局部的目前还没有想到方法设置
    public static void setScreen(boolean vertica) {
        Config.vertica = vertica;
    }

    /**
     * 横屏/竖屏-默认竖屏
     */
    public static boolean vertica = true;
    /**
     * 开启调试模式
     */
    public static boolean isDebug = true;


    public static String getVERSION() {
        return VERSION;
    }

    public static void setVERSION(String VERSION) {
        Config.VERSION = VERSION;
    }

    /**
     * 接口版本号
     */
    private static String VERSION = "1.0";


    public static int getCacheTime() {
        return cacheTime;
    }

    public static void setCacheTime(int cacheTime) {
        Config.cacheTime = cacheTime;
    }

    /**
     * 缓存时间
     */
    private static int cacheTime = 600;



    /**
     * 使用Picasso
     */
//    public static boolean userPicasso = true;




    /**
     * 令牌类型
     */
    public static int TOKENTYPE = 2;


    /**
     * 开启沉浸式状态栏样式(api>=19有效)
     */
//    public static boolean Style_Immersion = true;

//    public static int Style_AppColor = -49023;


    /**
     * 网络加密密钥
     */
    public static String Net_Token_Prefix = null;
    public static String Net_Token_Suffix = null;


    /**
     * titlebar 分割线显示
     */
//    public static boolean showTitlebarLine = false;


    /**
     * 用户id
     */
    private static String userid;


    public static Context getmContext() {
        return mContext;
    }

    /**
     * 上下文
     */
    private static Context mContext;




//    public static void setPOSTSecretkey(String secretkey){
//        Config.POST_ENCODE = 1;
//
//        if (secretkey.length()<16) {
//            StringBuffer stringBuffer = new StringBuffer(secretkey);
//            for (int i=secretkey.length();i<=16;i++){
//            stringBuffer.append("a");
//            }
//        }else if (secretkey.length()>16){
//            secretkey= secretkey.substring(0,16);
//        }
//        AES.keyBytes = secretkey;
//    }

    /**
     * 第一次运行调用,配置程序相关参数
     */
    public static void Config(Context context,String prefix,String suffix) {

        mContext  = context;
        try {
            LsfbLog.e(context.getPackageName());

//            ApplicationInfo appInfo = context.getPackageManager().getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA);
//            if (!checkToken(appInfo.metaData.getString("LSFBTOKEN"), context.getPackageName()))
//            {
//                LsfbLog.e("密钥不正确");
//                System.exit(0);
//            }

//            Config.Net_Token_Prefix = appInfo.metaData.getString("Net_Token_Prefix");
//            Config.Net_Token_Suffix = appInfo.metaData.getString("Net_Token_Suffix");

            Config.Net_Token_Prefix = Strings.nullToEmpty(prefix);
            Config.Net_Token_Suffix = Strings.nullToEmpty(suffix);

//            if (userFresco) {
//                ImagePipelineConfig config = OkHttpImagePipelineConfigFactory.newBuilder(context, new OkHttpClient()).build();
//                Fresco.initialize(context, config);
//            }
        } catch (Exception e) {
            LsfbLog.e("参数配置有误" + Log.getStackTraceString(e.fillInStackTrace()));
            System.exit(0);
        }
    }


    /**
     * 使用基本服务的时候必须配置url基本地址
     * @param url
     */
//    public static  void ConfigBaseURL(String url)
//    {
//        HttpUtils.getBASEURL();
//    }

    /**
     * 得到用户id 已用sp序列化.应尽量用这个来存储/设置id
     *
     * @return
     */
    public static String getUserId() {
        if(!Strings.isNullOrEmpty(userid)){
            //如果userid是空 先从sp里面取一次
            userid = SPUtils.get(mContext,"userid","").toString();
            return userid.isEmpty()?null:userid;
        }else{
            return null;
        }

    }

    /**
     * 设置用户id,并序列号到本地(sp)
     *
     * @param userid
     */
    public static void setUserId(String userid) {
        Config.userid = userid;
        SPUtils.put(mContext,"userid",userid);

    }


    /**
     * 检查token
     * @param token
     * @param packagename
     * @return
     */
//    private static boolean checkToken(String token, String packagename) {
//        String temp = MD5.GetMD5Code(packagename);
//
//        LsfbLog.e(temp);
//        String frist = temp.substring(0, temp.length() / 2);
//
//        LsfbLog.e(frist);
//        String end = temp.substring(temp.length() / 2, temp.length());
//        LsfbLog.e(end);
//
//        char[] ends= end.toCharArray();
//        char[] frists = frist.toCharArray();
//
//        for(int i=0;i<ends.length;i++)
//        {
//            if (i%2==0)
//            {
//                ends[i]=(char)((int)ends[i]-i);
//            }else
//            {
//                ends[i]=(char)((int)ends[i]+i);
//            }
//        }
//
//        for (int i=0;i<frists.length;i++)
//        {
//            frists[i]=(char)((int)frists[i]+1);
//        }
//        return MD5.GetMD5Code(new String(ends)+new String(frists)).equals(token);
//    }

}
